home *** CD-ROM | disk | FTP | other *** search
/ CU Amiga Super CD-ROM 18 / CU Amiga Magazine's Super CD-ROM 18 (1997)(EMAP Images)(GB)[!][issue 1998-01].iso / CDsupport / IDer / Routines / GetConfig.s < prev    next >
Text File  |  1997-02-18  |  2KB  |  76 lines

  1.     Move.W    #CFGOPENERR,_ErrorCode
  2.     Lea    _ConfigHandle(PC),A4
  3.  
  4.     Move.L    _Config(PC),A3
  5.     Cmp.L    #0,A3
  6.     Beq.S    .UseDefConfig
  7.  
  8.     Move.L    A3,_CfgErr+4
  9.     Move.L    A3,_CfgErr+4+SIZEOFERR
  10.     Move.L    A3,_CfgErr+4+(SIZEOFERR*2)
  11.     Bra.S    .OpenConfig
  12.  
  13. .UseDefConfig    Lea    IDerPrefs(PC),A3
  14.  
  15.     Move.L    A3,D1
  16.     Addq    #4,D1        ;try current directory
  17.     Move.L    #MODE_OLDFILE,D2
  18.     CALL    Open,DOS
  19.     Move.L    D0,(A4)
  20.     Bne.S    .ConfigFound
  21.  
  22.     Move.L    A3,D1        ;try ENV:
  23.     Move.L    #MODE_OLDFILE,D2
  24.     CALL    Open
  25.     Move.L    D0,(A4)
  26.     Bne.S    .ConfigFound
  27.  
  28.     Addq    #2,A3
  29.     Move.B    #'S',(A3)        ;try S:
  30. .OpenConfig    Move.L    A3,D1
  31.     Move.L    #MODE_OLDFILE,D2
  32.     CALL    Open,DOS
  33.     Move.L    D0,(A4)
  34.     Beq    CloseDown
  35.  
  36. .ConfigFound    Move.L    D0,D1
  37.     Moveq    #0,D2
  38.     Moveq    #OFFSET_END,D3        ;end of the file
  39.     CALL    Seek
  40.  
  41.     Move.L    (A4),D1
  42.     Moveq    #0,D2
  43.     Moveq    #OFFSET_BEGINNING,D3    ;start of the file
  44.     CALL    Seek
  45.  
  46.     Tst.L    D0        ;file size (difference between end and start)
  47.     Beq    CloseDown
  48.  
  49.     Addq    #1,D0        ;we need a blank byte at the end for saftey
  50.     Move.L    D0,_ConfigSize
  51.  
  52.     Move.W    #CFGMEMERR,_ErrorCode
  53.     Move.L    #MEMF_CLEAR,D1        ;the memory has to be clean for use to use it properly
  54.     CALL    AllocMem,EXEC
  55.     Move.L    D0,_ConfigMem
  56.     Beq    CloseDown
  57.  
  58.     Move.L    (A4),D1
  59.     Move.L    _ConfigMem(PC),D2
  60.     Move.L    _ConfigSize(PC),D3
  61.     CALL    Read,DOS
  62.  
  63.     Move.W    #CFGREADERR,_ErrorCode
  64.  
  65.     Move.L    _ConfigSize(PC),D1
  66.     Addq    #1,D0        ;make up for the extra byte
  67.     Sub.L    D0,D1
  68.     Bne    CloseDown
  69.  
  70.     Move.L    (A4),D1
  71.     CALL    Close
  72.     Clr.L    (A4)        ;the closedown routine would try to close it again if we don't clean up
  73.  
  74.     Move.L    _ConfigMem(PC),_ConfigCurPos    ;setup the current position indicator of the config file, as we are going to go walking through it
  75.     Clr.W    _ErrorCode
  76.